This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Ctrl+Shift+Enter.

library(tidyverse)
covid19 <- read_csv("data/covid19-daily-cases.csv")
Parsed with column specification:
cols(
  country_region = col_character(),
  date = col_date(format = ""),
  confirmed = col_double()
)
covid19
covid19 %>% 
  ggplot(aes(
    x = date, 
    y = confirmed, 
    colour = country_region)) +
  geom_line() +
  guides(colour = FALSE)

Fit with log scale because then its normal

covid19 %>% 
  ggplot(aes(
    x = date, 
    y = log10(confirmed),
    colour = country_region)) +
  geom_line() +
  guides(colour = FALSE)

covid19 %>% 
  ggplot(aes(
    x = date, 
    y = confirmed, 
    colour = country_region)) +
  geom_line() +
  guides(colour = FALSE) +
  scale_y_log10()

covid19_rel <- covid19 %>% 
  group_by(country_region) %>% 
  mutate(days = as.numeric(date - min(date))) %>% 
  ungroup()
covid19_rel
covid19_rel %>% 
  ggplot(aes(
    x = days,
    y = confirmed, 
    colour = country_region)) +
  geom_line() +
  scale_y_log10() +
  guides(colour = FALSE)

covid19_nz <- covid19_rel %>% 
  filter(country_region == "New Zealand")
p_nz <- covid19_rel %>% 
  ggplot(aes(x = days, y = confirmed, 
    group = country_region)) +
  geom_line(colour = "grey", alpha = 0.5) +
  geom_line(colour = "#238b45", size = 1, data = covid19_nz) +
  scale_y_log10() +
  guides(colour = FALSE)
p_nz

p_nz <- p_nz +
  geom_label(aes(
    x = max(days), y = max(confirmed),
    label = country_region), data = covid19_nz,
    colour = "#238b45", nudge_x = 3, nudge_y = .5)
p_nz

p_nz <- p_nz +
  scale_y_log10(labels = scales::label_comma()) +
  xlim(c(0, 100))
Scale for 'y' is already present. Adding another scale for 'y', which will replace the existing scale.
p_nz

p_nz <- p_nz +
  labs(
    x = "Days since March 1",
    y = "Confirmed cases (on log10)",
    title = "Worldwide coronavirus confirmed cases",
    subtitle = "highlighting New Zealand",
    caption = "Data source: John Hopkins University, CSSE"
  )
p_nz

library(plotly)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 methods overwritten by 'htmltools':
  method               from         
  print.html           tools:rstudio
  print.shiny.tag      tools:rstudio
  print.shiny.tag.list tools:rstudio
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: 㤼㸱plotly㤼㸲

The following object is masked from 㤼㸱package:ggplot2㤼㸲:

    last_plot

The following object is masked from 㤼㸱package:stats㤼㸲:

    filter

The following object is masked from 㤼㸱package:graphics㤼㸲:

    layout
ggplotly(p_nz)
Transformation introduced infinite values in continuous y-axisgeom_GeomLabel() has yet to be implemented in plotly.
  If you'd like to see this geom implemented,
  Please open an issue with your example code at
  https://github.com/ropensci/plotly/issues
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiANCg0KVHJ5IGV4ZWN1dGluZyB0aGlzIGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqUnVuKiBidXR0b24gd2l0aGluIHRoZSBjaHVuayBvciBieSBwbGFjaW5nIHlvdXIgY3Vyc29yIGluc2lkZSBpdCBhbmQgcHJlc3NpbmcgKkN0cmwrU2hpZnQrRW50ZXIqLiANCg0KYGBge3IgcmVhZH0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KY292aWQxOSA8LSByZWFkX2NzdigiZGF0YS9jb3ZpZDE5LWRhaWx5LWNhc2VzLmNzdiIpDQpjb3ZpZDE5DQpgYGANCg0KYGBge3IgZ3JhcGh9DQpjb3ZpZDE5ICU+JSANCiAgZ2dwbG90KGFlcygNCiAgICB4ID0gZGF0ZSwgDQogICAgeSA9IGNvbmZpcm1lZCwgDQogICAgY29sb3VyID0gY291bnRyeV9yZWdpb24pKSArDQogIGdlb21fbGluZSgpICsNCiAgZ3VpZGVzKGNvbG91ciA9IEZBTFNFKQ0KYGBgDQoNCg0KRml0IHdpdGggbG9nIHNjYWxlIGJlY2F1c2UgdGhlbiBpdHMgbm9ybWFsDQoNCmBgYHtyIGdyYXBoIGxvZ30NCmNvdmlkMTkgJT4lIA0KICBnZ3Bsb3QoYWVzKA0KICAgIHggPSBkYXRlLCANCiAgICB5ID0gbG9nMTAoY29uZmlybWVkKSwNCiAgICBjb2xvdXIgPSBjb3VudHJ5X3JlZ2lvbikpICsNCiAgZ2VvbV9saW5lKCkgKw0KICBndWlkZXMoY29sb3VyID0gRkFMU0UpDQpgYGANCg0KYGBge3IgZ3JhcGggbG9nIHNjYWxlfQ0KY292aWQxOSAlPiUgDQogIGdncGxvdChhZXMoDQogICAgeCA9IGRhdGUsIA0KICAgIHkgPSBjb25maXJtZWQsIA0KICAgIGNvbG91ciA9IGNvdW50cnlfcmVnaW9uKSkgKw0KICBnZW9tX2xpbmUoKSArDQogIGd1aWRlcyhjb2xvdXIgPSBGQUxTRSkgKw0KICBzY2FsZV95X2xvZzEwKCkNCmBgYA0KDQpgYGB7ciByZWdpb259DQpjb3ZpZDE5X3JlbCA8LSBjb3ZpZDE5ICU+JSANCiAgZ3JvdXBfYnkoY291bnRyeV9yZWdpb24pICU+JSANCiAgbXV0YXRlKGRheXMgPSBhcy5udW1lcmljKGRhdGUgLSBtaW4oZGF0ZSkpKSAlPiUgDQogIHVuZ3JvdXAoKQ0KY292aWQxOV9yZWwNCmBgYA0KDQpgYGB7ciByZWdpb24gZ3JhcGh9DQpjb3ZpZDE5X3JlbCAlPiUgDQogIGdncGxvdChhZXMoDQogICAgeCA9IGRheXMsDQogICAgeSA9IGNvbmZpcm1lZCwgDQogICAgY29sb3VyID0gY291bnRyeV9yZWdpb24pKSArDQogIGdlb21fbGluZSgpICsNCiAgc2NhbGVfeV9sb2cxMCgpICsNCiAgZ3VpZGVzKGNvbG91ciA9IEZBTFNFKQ0KYGBgDQpgYGB7ciBuen0NCmNvdmlkMTlfbnogPC0gY292aWQxOV9yZWwgJT4lIA0KICBmaWx0ZXIoY291bnRyeV9yZWdpb24gPT0gIk5ldyBaZWFsYW5kIikNCnBfbnogPC0gY292aWQxOV9yZWwgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBkYXlzLCB5ID0gY29uZmlybWVkLCANCiAgICBncm91cCA9IGNvdW50cnlfcmVnaW9uKSkgKw0KICBnZW9tX2xpbmUoY29sb3VyID0gImdyZXkiLCBhbHBoYSA9IDAuNSkgKw0KICBnZW9tX2xpbmUoY29sb3VyID0gIiMyMzhiNDUiLCBzaXplID0gMSwgZGF0YSA9IGNvdmlkMTlfbnopICsNCiAgc2NhbGVfeV9sb2cxMCgpICsNCiAgZ3VpZGVzKGNvbG91ciA9IEZBTFNFKQ0KcF9ueg0KYGBgDQoNCmBgYHtyIGdyYXBoIG56fQ0KcF9ueiA8LSBwX256ICsNCiAgZ2VvbV9sYWJlbChhZXMoDQogICAgeCA9IG1heChkYXlzKSwgeSA9IG1heChjb25maXJtZWQpLA0KICAgIGxhYmVsID0gY291bnRyeV9yZWdpb24pLCBkYXRhID0gY292aWQxOV9ueiwNCiAgICBjb2xvdXIgPSAiIzIzOGI0NSIsIG51ZGdlX3ggPSAzLCBudWRnZV95ID0gLjUpDQpwX256DQpgYGANCmBgYHtyIGdyYXBoIG56IHNjYWxlfQ0KcF9ueiA8LSBwX256ICsNCiAgc2NhbGVfeV9sb2cxMChsYWJlbHMgPSBzY2FsZXM6OmxhYmVsX2NvbW1hKCkpICsNCiAgeGxpbShjKDAsIDEwMCkpDQpwX256DQpgYGANCg0KYGBge3IgZ3JhcGggbnogc2NhbGUgbGFiZWxzfQ0KcF9ueiA8LSBwX256ICsNCiAgbGFicygNCiAgICB4ID0gIkRheXMgc2luY2UgTWFyY2ggMSIsDQogICAgeSA9ICJDb25maXJtZWQgY2FzZXMgKG9uIGxvZzEwKSIsDQogICAgdGl0bGUgPSAiV29ybGR3aWRlIGNvcm9uYXZpcnVzIGNvbmZpcm1lZCBjYXNlcyIsDQogICAgc3VidGl0bGUgPSAiaGlnaGxpZ2h0aW5nIE5ldyBaZWFsYW5kIiwNCiAgICBjYXB0aW9uID0gIkRhdGEgc291cmNlOiBKb2huIEhvcGtpbnMgVW5pdmVyc2l0eSwgQ1NTRSINCiAgKQ0KcF9ueg0KYGBgDQoNCmBgYHtyIGludGVyYWN0aXZlfQ0KbGlicmFyeShwbG90bHkpDQpnZ3Bsb3RseShwX256KQ0KYGBgDQo=